package org.dbp.coleciones;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * Clase de utilidades para añadir una estructura de datos de tipo peine.
 * 
 * @author David Blanco París
 *
 */
public class PeineUtils {
	
	private Logger logger = LoggerFactory.getLogger(PeineUtils.class);
	
	private static PeineUtils instancia= new PeineUtils();
	
	public static PeineUtils obtenerInstancia(){
		return instancia;
	}
	/**
	 * 
	 * Te añade un elemento en la lista de elementos de la clave.
	 * 
	 * @param estructura	La estrucutura de datos.
	 * @param clave			La clave.
	 * @param elemento		El elemento
	 */
	public <T extends Serializable,E extends Serializable> void addElemento(Map<T,List<E>> estructura,T clave,E elemento){
		if(estructura!=null && clave!=null && elemento!=null){
			if(!estructura.containsKey(clave)){
				estructura.put(clave, new ArrayList<E>());
			}
			List<E> elementos=estructura.get(clave);
			elementos.add(elemento);
		}else{
			logger.warn("No se ha podido cargar el elemento por que algunos de los parametros de entrada no son validos.");
			logger.warn("   - Estructura [{}]",estructura);
			logger.warn("   - Clave [{}]",clave);
			logger.warn("   - Elemento [{}]",elemento);
		}
	}
	
}
